package com.example.blog.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.example.blog.entity.BlogLike;

public interface BlogLikeMapper {
    /**
     * 通过用户ID和博客ID查询点赞记录
     */
    BlogLike selectByPrimaryKey(@Param("userId") Integer userId, @Param("blogId") Integer blogId);
    
    /**
     * 通过博客ID查询所有点赞记录
     */
    List<BlogLike> selectByBlogId(Integer blogId);
    
    /**
     * 通过用户ID查询所有点赞记录
     */
    List<BlogLike> selectByUserId(Integer userId);
    
    /**
     * 查询用户点赞的所有博客ID
     */
    List<Integer> selectLikedBlogIdsByUserId(Integer userId);
    
    /**
     * 插入点赞记录
     */
    int insert(BlogLike blogLike);
    
    /**
     * 更新点赞状态
     */
    int updateLikeStatus(@Param("userId") Integer userId, @Param("blogId") Integer blogId, 
                         @Param("isLiked") Boolean isLiked);
    
    /**
     * 删除点赞记录
     */
    int deleteByPrimaryKey(@Param("userId") Integer userId, @Param("blogId") Integer blogId);
    
    /**
     * 删除博客的所有点赞记录
     */
    int deleteByBlogId(Integer blogId);
    
    /**
     * 删除用户的所有点赞记录
     */
    int deleteByUserId(Integer userId);
    
    /**
     * 统计博客的点赞数
     */
    int countLikesByBlogId(Integer blogId);
} 